package com.itqf.dao;

import com.itqf.entity.Product;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description:
 * @Company: 千锋互联
 * @Author: 李丽婷
 * @Date: 2020/9/23
 * @Time: 下午5:27
 */
public interface ProductDao {


    public  Product  findById(int id);

    //sql多占位符，方法的参数最好用： 1）Map 2） 对象
    //@Param("arg0")   arg0是map的key  传入实参是map的值
    //Map
//    public  Product findByNameAndId(@Param("arg0") String name, @Param("arg1")int id);


    public  List<Product> findByNameAndInfo(@Param("name") String name, @Param("info")String info);


    public  int update(Product product);

    /*
     * 参数绑定  常用
     */
    public  Product findByNameAndId(@Param("arg0") String name, @Param("arg1")int id);
    //#{0}  #{1}  来获得参数值
    public  List<Product> findByNameAndInfo1(String name, String info);

    public  List<Product> findByNameAndInfo2(Map<String,Object> map);
    // //#{param1}  #{param2}  来获得参数值
    public  List<Product> findByNameAndInfo3(String name, String info);


    /**
     *    结果集处理  1）封装对象中   如果属性和字段不一致  起别名解决
     *    select p_id as pid,p_name as pname ,p_time as ptime
     */
    public List<Product> findAll();

    //2）封装对象中   如果属性和字段不一致  在映射文件中使用resultMap做结果映射
    public List<Product> findAll2();

    //3）封装对象中   如果属性和字段不一致  可以封装到Map中
    public List<Map<String,Object>> findAllOnMap();


    //==========================
    //自增主键
    public   int insertProduct(Product product);
    public   int insertProduct2(Product product);



}
